/**
 * 对象
 */
function makePerson(first, last) {
    return {
        first: first,
        last: last,
        fullName: function() {
            return this.first + ' ' + this.last;
        },
        fullNameReversed: function() {
            return this.last + ', ' + this.first;
        }
    }
}
s = makePerson("Simon", "Willison");
s.fullName(); // Simon Willison
s.fullNameReversed(); // Willison, Simon

s = makePerson("Simon", "Willison");
// let last = '1'
var fullName = s.fullName;
fullName(); // undefined undefined
console.log(fullName())


/**
 * 不加new关键字，直接调用会产生undefined错误，因为this关键字指向的是调用方法的对象，
 * 在方法person方法中调用，this指向的就是person方法，所以first，last字段是有声明的，
 * 而在全局环境下调用person方法，this就会指向全局环境，全局环境中如果没有first，last，就会报错undefined
 * 不过全局环境中有first，last变量
 * 
 * new关键字的作用是生成一个新的空对象，然后将
 */


// console.log(name2)